草庐IT

Java Generics - 类本身的子类?

全部标签

java - 子类 catch block 会捕获已检查的父异常吗?

我有一个父类的检查异常的方法,它可以抛出父类和子类类型的异常publicvoidmethod()throwsParentException{if(false)thrownewParentException();elseif(true)thrownewChildException();//thisoneisthrown}我有一个级联捕获block,它首先有子异常try{method();}catch(ChildExceptione){//Igethere?}catch(ParentExceptione){//orhere?}哪个block会捕获抛出的异常?由于该方法仅显式声明了Paren

java - 需要使用泛型将列表过滤到特定的子类

我有一个包含某个父类(superclass)(如Vehicle)的List,我想编写一个方法来返回该列表中的对象,这些对象是某个子类(如Car)的实例.到目前为止我有这个,但它会生成一个典型的“未经检查”的操作编译器警告:publicListgetVehiclesOfType(Classtype){Listresult=newArrayList();for(Vehiclevehicle:getVehicles()){if(type.isAssignableFrom(vehicle.getClass())){result.add(type.cast(vehicle));//Compile

java - 如何将 protected 方法访问限制为仅子类

我们如何才能将任何protected方法的访问限制为任何包中的子类,而不是同一包中的类。如果任何类不是子类并且在同一个包中,它也必须抛出异常,如“protected方法”。编辑:有没有办法检查调用类名实例,然后我们可以使用instanceof进行验证。 最佳答案 这是不可能的。您可以在protected修饰符(子类+同一包中的类)和默认修饰符(同一包中的类)之间进行选择。没有第三种选择。此外,您也无法在运行时轻松强制执行此操作,因为查找调用代码的类名和包并不简单。请参阅:HowdoIfindthecallerofamethodusi

尝试使用父类方法时Java调用子类方法

如果我有两个类,A和B,publicclassA{publicinttest(){return1;}}publicclassBextendsA{publicinttest(){return2;}}如果我这样做:Aa1=newB(),那么a1.test()会根据需要返回2而不是1。这只是Java的一个怪癖,还是有某种原因导致这种行为? 最佳答案 这叫做polymorphism.在运行时,将根据a1的“真实”类型调用正确的方法,在本例中为B。正如维基百科所说:Theprimaryusageofpolymorphisminindustry

java - 我有一个带有 @ExceptionHandler 的父类和一个带有自己版本的子类。我收到一个不明确的方法错误

父级:@ExceptionHandler(NoUserException.class)protectedModelAndViewhandleException(NoUserExceptione){Mapmodel=newHashMap();model.put(ModelKeys.HOST_KEY,"message");returnnewModelAndView("noAccess",model);}child:@ExceptionHandler(NoUserException.class)protectedvoidhandleException(NoUserExceptione,Htt

java - 多级继承子类调用 'grand'父函数

这个问题在这里已经有了答案:Whyissuper.super.method();notallowedinJava?(22个答案)关闭9年前。publicclassGrandParent{publicvoidwalk(){...}}publicclassParent{publicvoidwalk(){...}}publicclassChild{publicvoidwalk(){//HereinsomecasesIwanttousewalkmethodofGrandParentclass}}现在在Child.walk()中,我只想在某些情况下使用GrandParent.walk()。我怎样

java - 如何判断一个类是否是其他类的子类?

我想检查一个类对象是否代表其他类的子类例如Classclass1=Class.forName("Class1");Classclass2=Class.forName("Class2");if(class1.isSubClassOf(class2))//fakemethosisSubClassOf{//dosth}如何实现这个isSubClassOf方法? 最佳答案 Class.isAssignableFrom()或多或少提供了您想要的东西,尽管它也处理接口(interface),因此可能需要做更多的额外工作以确保它是一个子类,无论是

java - 如何模拟从抽象类继承的 protected 子类方法?

如何使用Mockito或PowerMock模拟一个由子类实现但继承自抽象父类(superclass)的protected方法?换句话说,我想在模拟“doSomethingElse”的同时测试“doSomething”方法。抽象父类(superclass)publicabstractclassTypeA{publicvoiddoSomething(){//CallsforsubclassbehaviordoSomethingElse();}protectedabstractStringdoSomethingElse();}子类实现publicclassTypeBextendsTypeA{

java - 我可以静态导入私有(private)子类吗?

我有一个私有(private)的枚举,不会在类外公开。无论如何我可以做那种类型的静态导入,这样我就不必每次都输入枚举类型了吗?或者有更好的写法吗?示例:packagekip.test;importstatickip.test.Test.MyEnum.*;//compileerrorpublicclassTest{privatestaticenumMyEnum{DOG,CAT}publicstaticvoidmain(String[]args){MyEnumdog=MyEnum.DOG;//thisworksbutIdon'twanttotype"MyEnum"MyEnumcat=CAT

java - 为什么Java中可以将父类(super class)初始化为子类?

简而言之,这是如何以及为什么可能的:Objectobj=newMyClass();Object是所有对象的父类(superclass),因此MyClass是Object的子类。一般来说,在Java中,为什么可以在父类中使用子类的构造函数?我明白它怎么可能反过来,因为子类拥有父类的所有变量/方法,所以当你初始化它们时,你只是在初始化父构造函数中指定的变量,这些变量按定义存在于child。问题是,当你反过来时,它不一定是真的。子项可以拥有父项没有的变量,那么当父项一开始甚至没有变量时,如何将子项构造函数与父项一起使用?这个特性在开发中有什么用?我想如果你想要一个B类的实例,你会把它声明为B